﻿using BenCaoXuan.Infrastructure.Attr;
using BenCaoXuan.Infrastructure.Dto.Middle.Request.Appointment;
using BenCaoXuan.Infrastructure.Dto;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BenCaoXuan.Infrastructure.Dto.Middle.Response.Product;

namespace BenCaoXuan.Service.Interface.middle
{
    [Provider_]
    public interface I_Appointment_Service
    {
        /// <summary>
        /// 获取客户最近三条预约记录
        /// </summary>
        /// <param name="customerId"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Get_Customer_LatestThreeAppointments(string? customerId);
        /// <summary>
        /// 重新预约
        /// </summary>
        /// <param name="appointmentId"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Rebook_Appointment(string? appointmentId);
        /// <summary>
        /// 取消预约
        /// </summary>
        /// <param name="appointmentId"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Cancel_Appointment(string? appointmentId);
        
            /// <summary>
            /// 获取客户的所有预约
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            Task<Api_Result_Dto> Get_Customer_Appointment(string? customerId);
        /// <summary>
        /// 查询预约详情
        /// </summary>
        /// <param name="appointmentId"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Get_AppointmentDetails(string? appointmentId, bool isProduct);
        /// <summary>
        /// 立即预约-套餐
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Add_Appointment(Appointment_Request_Dto dto);
        /// <summary>
        /// 立即预约-产品
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Add_Product_Appointment(Appointment_Request_Dto dto);
    }
}
